home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / glass / glass.lha / GLASS / dtm / test10.gl < prev    next >
Text File  |  1991-06-18  |  1KB  |  52 lines

  1. Basetype E;
  2.  
  3. Atom
  4.    not   :- E => E,
  5.    and2  :- E & E => E,
  6.    and3  :- E & E & E => E,
  7.    nand  :- E & E => E,
  8.    nand3 :- E & E & E => E,
  9.    nand4 :- E & E & E & E => E,
  10.    one :- <> => E,
  11.    init :- <> => E;
  12.  
  13. Def
  14.    dff :- E & E & E & E => E & E;
  15.    dff [ck,d,clr,pr] = [q,q']
  16.     where
  17.        q  = nand3 [q',q1,pr];
  18.        q' = nand3 [q,q2,clr];
  19.        q1 = nand3 [u1, ck, clr];
  20.        u1 = nand3 [u4, q1, pr];
  21.        q2 = nand3 [q1, ck, u4];
  22.        u4 = nand3 [q2, d, clr];
  23.     endwhere;
  24.  
  25. Def
  26.    jkff :- E & E & E & E => E & E;
  27.    jkff [ck, j, k, clr] = [q,q']
  28.       where
  29.           q   = nand  [q',a];
  30.           q'  = nand3 [q,clr,b];
  31.           a   = nand  [ck', q1];
  32.           b   = nand  [ck', q1'];
  33.           q1  = nand  [q1', c];
  34.           q1' = nand3 [q1,clr,d];
  35.           c   = nand4 [ck, q', j,clr];
  36.           d   = nand3 [ck, q, k];
  37.           ck' = not   ck;
  38.       endwhere;
  39.  
  40. Def simp :- E & E => E & E & E & E;
  41.    simp [reset, ck] = [q0,q1,q2,q3]
  42.       where
  43.      [q0,q0'] = jkff [ck, one [], one [], reset];
  44.      [q1,q1'] = jkff [ck, t0, t0, reset];
  45.      [q2,q2'] = jkff [ck, t1, t1, reset];
  46.      [q3,q3'] = jkff [ck, t2, t2, reset];
  47.      t0 = q0;
  48.      t1 = and2 [q0, q1];
  49.      t2 = and3 [q0, q1, q2];
  50.       endwhere;
  51.  
  52.